package Service.Teacher;

import Entity.Grade.AdviserGrade;
import Entity.MyTableData;
import Entity.Process.Medium;
import Entity.Process.ReportDetail;
import Entity.Process.Task;
import Entity.Process.TaskDetail;

public interface ProcessService {

    /**
     * 指导老师通过编号 关键字 分页查询自己学生的论文
     *
     * @param queryKey 关键字 为"%%"查询所有
     * @param offset   从第几条开始
     * @param limit    限制的条数
     * @param No       编号
     * @param state    状态
     * @param type     1是学生查询 2是老师查询 3是查询所有
     * @return Paper的列表
     */

    MyTableData getAllPaper(String queryKey, Integer offset, Integer limit, String No, String state, Integer type);

    /**
     * 指导老师下达任务
     *
     * @param task       任务书
     * @param taskDetail 任务书详情
     * @return true成功 false 失败
     */
    Boolean addAssigmentByTNO(Task task, TaskDetail taskDetail);

    /**
     * 通过任务书id来获取任务书详情
     *
     * @param id 任务书id
     * @return taskDetail对象
     */
    TaskDetail getTaskDetailById(Integer id);

    /**
     * 老师插入一条中期检查
     *
     * @param medium 要插入的中期检查的对象
     * @return true 成功  false 失败
     */
    Boolean addMedium(Medium medium);


    /**
     * 插入评阅老师的定稿评分
     *
     * @param grade 要插入的数据对象
     * @return true 成功  false 失败
     */
    Boolean addAdviserGrade(AdviserGrade grade);


    /**
     * 通过开题报告详情来获取开题报告
     *
     * @param id 开题详情报告的id
     * @return ReportDetail
     */
    ReportDetail getReportDetailById(Integer id);
}
